﻿/***
  \brief  КЛасс для хранения и загарузки конфигурации приложения.
  
*/


#pragma once


#include "core_api.h"
#include "common_types.h"

#include <ksini/ksini.h>

#include <windows.h>

#include "core_api.h"
#include "Error.h"
#include "PtrAuto.h"

 

  
//! \brief КОнфигурация приложения (exe and dll)  
class CORE_API  Config  
{
private:
	const std::wstring m_path;
	PtrAuto< ksini::IniFile >  m_ini;

public:

	static void SaveString( const std::string& src, const WCHAR* filename ) throw(Error);
	static void LoadString( std::string& dest,		const WCHAR* filename ) throw(Error);

	Config(const std::wstring& fullPath) throw(Error); 
	virtual ~Config();

	void Save() throw(Error);
	
	std::string get_value(const std::string& sSection, 
		const std::string& sKey, 
		const std::string& default_value = "" ) throw  (Error);

	
	void set_value(const std::string& sSection, 
		const std::string& sKey, 
		const std::string& value,
		const char* comment="") throw  (Error);





};

